REPORT ztest_0018. *TYPE-POOLS:abap. *PARAMETERS p_name TYPE tabname. *DATA: d_ref TYPE REF TO data, * lt_alv_cat TYPE TABLE OF lvc_s_fcat, * ls_alv_cat LIKE LINE OF lt_alv_cat. * *DATA: lt_table LIKE TABLE OF dntab. *DATA: ls_table TYPE dntab. * *FIELD-SYMBOLS : TYPE table, * TYPE any, * TYPE any. **取出表结构的字段目录 *CALL FUNCTION 'NAMETAB_GET' * EXPORTING * langu = sy-langu * tabname = p_name * TABLES * nametab = lt_table * EXCEPTIONS * no_texts_found = 1. **根据取出的字段目录生成参考字段目录 *LOOP AT lt_table INTO ls_table. * ls_alv_cat-fieldname = ls_table-fieldname. * ls_alv_cat-ref_table = p_name. * ls_alv_cat-ref_field = ls_table-fieldname. * APPEND ls_alv_cat TO lt_alv_cat. * CLEAR ls_alv_cat. *ENDLOOP. **内表创建 *CALL METHOD cl_alv_table_create=>create_dynamic_table * EXPORTING * it_fieldcatalog = lt_alv_cat * IMPORTING * ep_table = d_ref. **指定生成的内表到字段符号 *ASSIGN d_ref->* TO . **从动态表中取数到动态内表中 *SELECT * INTO CORRESPONDING FIELDS OF TABLE UP TO 100 *ROWS FROM (p_name). **显示内表中的数据 *CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' * EXPORTING * i_structure_name = p_name * TABLES * t_outtab = * EXCEPTIONS * program_error = 1 * OTHERS = 2. *IF sy-subrc 0. * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno * WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. *ENDIF. PARAMETERS p_name TYPE tabname. DATA: dyn_table TYPE REF TO data. DATA: dyn_wa TYPE REF TO data. FIELD-SYMBOLS: TYPE table, TYPE any. *创建动态表结构 CREATE DATA dyn_table TYPE TABLE OF (p_name). *创建动态内表 ASSIGN dyn_table->* TO . *创建动态工作区结构 CREATE DATA dyn_wa LIKE LINE OF . *创建动态工作区 ASSIGN dyn_wa->* TO . *从动态表中取数到动态内表中 SELECT * INTO CORRESPONDING FIELDS OF TABLE UP TO 100 ROWS FROM (p_name). *对取出数据进行处理 LOOP AT ASSIGNING . "内表数据处理 ENDLOOP. *显示内表中的数据 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_structure_name = p_name TABLES t_outtab = EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
|